[HTTP] HTTP 메서드 총정리

업데이트:



✅ HTTP 메서드

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 일컫습니다. 즉, 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법을 말합니다.

HTTP메서드는 총 9종류로 주로 쓰이는 메서드는 5가지 정도가 존재합니다.

📌 주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT: 리소스 대체, 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

📌 기타 메서드

  • HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션을 설명 ( 주로 CORS에서 사용 )
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행






✅ HTTP 메서드 - GET

  • 리소스 조회 메서드 ( CRUD의 READ)
  • 서버에 전달하고 싶은 데이터는 쿼리를 통해서 전달합니다.

    GET /members/100?userName=kim&age=27

  • 메시지 바디를 통해서 데이터를 전달할 수도 있지만, 지원하지 않는 곳이 많아 권장하지 않습니다.
  • 조회 할때 POST도 사용 가능하지만, GET 메서드는 캐싱이 가능하기 때문에 GET을 사용하는것이 유리합니다.



📌 정적 데이터 GET 과정

이미지, 텍스트 같은 정적 데이터는 쿼리파라미터 없이 리소스 경로만으로 조회가 가능합니다.


1. 클라이언트에서 /memebers/100 으로 100번 멤버에 대한 정보를 달라고 GET 요청을 보냅니다.


2. 서버에서는 GET요청을 분석후 필요한 데이터를 담아 Response를 만듭니다.


3. 서버는 Response에 대한 응답데이터를 만들고 클라이언트에 응답데이터를 전송합니다. 200 OK status를 가집니다.



📌 동적 데이터 GET 과정

  • 주로 검색, 게시판 목록에서 정렬 필터에 사용됩니다.
  • 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용합니다.
  • 쿼리 파라미터를 사용해서 데이터를 전달합니다.
  • 쿼리 파라미터는 key1=value1&key2=value2 의 구조를 띄고 있습니다.


1. 요청 URL뒤에 쿼리파라미터를 부여하고 상세한 조회 데이터를 얻을 수 있습니다.



📌 HTML Form 데이터 GET 과정

  • HTML Form 태그를 활용해 서버와 클라이언트가 통신할 수 있습니다.
  • HTML Form 전송은 GETPOST만을 지원합니다.
  • GET, POST 이외의 태그를 사용하기 위해서는 Ajax비동기통신을 사용할 수 있습니다.



1. 웹페이지에서 Form 태그안에 데이터를 작성하고 전송버튼을 누릅니다.

2. GET 메서드 동작에 따라 input 태그안에 들어간 값들이 쿼리스트링으로 서버로 전송됩니다.






✅ HTTP 메서드 - POST

  • 전달한 데이터를 처리하는 메서드 ( CRUD의 CREATE )
  • 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버에서 요청데이터를 처리합니다.
  • 메시지 바디를 통해 들어온 데이터를 처리하는 모든 기능을 수행합니다.
  • 주로 전달된 데이터로 신규 리소스 등록, 프로세스 처리에 사용합니다.



📌 요청 데이터를 어떻게 처리한다는 뜻일까?


데이터를 처리한다는 말이 잘 이해가 되지 않을 수 있습니다. 구체적으로 ‘처리’라는 개념이 어떤것인지 먼저 예시로 알아보고 POST에 대해서 알아보겠습니다.

정식 스펙에서 POST는 다음과 같이 설명합니다. POST 메서드는 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함 된 표현을 처리하도록 요청합니다.

  • HTML 양식에 입력 된 필드와 같은 데이터 블록을 데이터 처리 프로세스에 제공 ( HTML FORM에 입력한 정보로 회원가입, 주문 등에서 사용 )
  • 게시판, 뉴스 그룹, 메일링 리스트, 블로그 또는 유사한 기사 그룹에 메시지 게시 ( 게시판 글쓰기, 댓글 달기 )
  • 서버가 아직 식별하지 않은 새 리소스 생성 ( 신규 주문 생성 )
  • 기존 자원에 데이터 추가 ( 한 문서 끝에 내용 추가하기 )

한마디로 리소스 URI에 POST 요청이 오면 요청 데이터를 어떻게 처리할지 리소스마다 따로 정해줘야 합니다.



📌 JSON 데이터 POST 과정


1. 클라이언트는 처리하고자 하는 데이터를 메시지 바디에 담아 서버로 전송합니다.


2. 서버는 받은 메시지를 분석해 요청한 로직대로 처리합니다. 아래 그림에서는 신규 리소스 식별자를 생성하는 로직을 처리합니다.


3. 처리한 로직에 대한 데이터를 바디에 담아 클라이언트로 보내줍니다. 신규자원에 대한 생성은 200 or 201의 status로 지정합니다.



📌 HTML Form 데이터 POST 과정

  • HTML Form 태그를 활용해 서버와 클라이언트가 통신할 수 있습니다.
  • HTML Form 전송은 GETPOST만을 지원합니다.
  • GET, POST 이외의 태그를 사용하기 위해서는 Ajax비동기통신을 사용할 수 있습니다.
  • GET 방식과 동일하게 사용됩니다.


1. 클라이언트가 웹페이지에 있는 Form 태그를 통해 데이터를 전송합니다.

2. 서버는 POST메서드를 받아오고 데이터를 처리한 뒤 메시지 바디에 데이터를 저장해서 응답합니다.






✅ HTTP 메서드 - PUT

  • 리소스를 대체(수정) 하는 메서드 입니다. ( CRUD의 UPDATE )
  • 리스소가 존재한다면 대체하고, 리소스가 없으면 생성합니다.
  • 한마디로 리소스를 덮어쓰기 한다고 볼 수 있습니다.
  • 리소스를 대체해야 하므로 클라이언트가 URI를 지정해야 합니다.
  • PUT은 리소스 전체 변경, PATCH는 리소스 부분 변경



📌 PUT 요청에 기존 리소스가 존재하는 경우


1. PUT /members/100 : 기존 리소스가 존재하는 경우에 리소스를 교체하겠다는 PUT요청을 전송합니다.


2. 기존 /members/100 리소스에서 새로 요청한 리소스로 변경됩니다.



📌 PUT 요청에 기존 리소스가 존재하지 않는 경우


1. PUT /members/100 : 기존 리소스가 존재하지 않을때 PUT요청을 전송합니다.


2. 기존 리소스가 존재하지 않으므로 요청한 PUT리소스를 생성합니다.



주의❗ - PUT메서드는 기존리소스를 완전히 대체합니다!


1. 기존 /members/100usernameage라는 필드 두개가 존재하고, PUT요청으로는 age필드만 전송합니다.


2. PUT요청은 리소스를 완전히 대체하기 때문에 username필드는 삭제됩니다.

👀 PUT과 PATCH 메서드의 가장 큰 차이점이므로 반드시 알아두어야 합니다!






✅ HTTP 메서드 - PATCH

  • 리소스의 일부분을 변경해주는 메서드 ( CRUD의 UPDATE )
  • PATCH를 지원하지 않는 서버에서는 POST를 사용하기도 합니다.
  • PUT은 리소스 전체 변경, PATCH는 리소스 부분 변경



1. PATCH /members/100 : 기존 리소스를 대체하기 위한 요청을 전송합니다.


2. 기존 리소스에서 요청된 age 필드만 변경됩니다.






✅ HTTP 메서드 - DELETE

  • 리소스를 삭제합니다. ( CRUD의 DELETE )



1. DELETE /members/100 : 리소스를 삭제하기 위한 요청을 전송합니다.


2. /members/100 리소스가 삭제됩니다.

댓글남기기